package com.ljkj.cordial.chat.dao;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonToken;
import com.lanjiu.lib.utils.json.JsonUtils;

import org.greenrobot.greendao.converter.PropertyConverter;

import java.io.IOException;
import java.lang.reflect.ParameterizedType;
import java.util.List;

import io.grpc.internal.JsonParser;

/**
 * 嵌套db辅助类
 * @param <T>
 */
public class DbConverterList<T> implements PropertyConverter<List<T>, String> {
    @Override
    public List<T> convertToEntityProperty(String databaseValue) {
        if (databaseValue == null) {
            return null;
        }
        // 先得获得这个，然后再typeToken.getType()，否则会异常
        TypeToken<List<T>> typeToken = new TypeToken<List<T>>() {
        };
//        Class<T> rawType = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        return JsonUtils.fromJson(databaseValue, typeToken.getType());
    }

    @Override
    public String convertToDatabaseValue(List<T> entityProperty) {
        if (entityProperty == null || entityProperty.size() == 0) {
            return null;
        }
        return JsonUtils.toJson(entityProperty);
    }
}
